/*
 * 文 件 名:  SysparaAction.java
 * 版    权:  Tydic Technologies Co., Ltd. Copyright 1993-2013,  All rights reserved
 * 描    述:  <描述>
 * 修 改 人:  yanglong
 * 修改时间:  2013-11-10
 * 跟踪单号:  <需求跟踪单号>
 * 修改单号:  <需求修改单号>
 * 修改内容:  <修改内容>
 */
package com.hfut.jpoa.action;

import java.io.IOException;
import java.text.ParseException;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import com.hfut.jpoa.common.action.AbsAction;
import com.hfut.jpoa.common.dto.Pagination;
import com.hfut.jpoa.common.dto.ResultDto;
import com.hfut.jpoa.common.exception.ServiceException;
import com.hfut.jpoa.common.util.ConstantUtil;
import com.hfut.jpoa.common.util.DateUtils;
import com.hfut.jpoa.common.util.UID;
import com.hfut.jpoa.dto.SysparaDTO;
import com.hfut.jpoa.model.Syspara;
import com.hfut.jpoa.service.SysparaService;
import com.hfut.jpoa.service.exception.SysparaException;
import com.sun.tools.javac.util.List;

/**
 * <一句话功能简述> <功能详细描述>
 * 
 * @author yanglong
 * @version [1.0, 2013-11-10]
 * @since [产品/1.0]
 */
public class SysparaAction extends AbsAction<SysparaDTO>
{

	private static final Logger LOGGER = LoggerFactory
	        .getLogger(SysparaAction.class);

	private static final long serialVersionUID = -7819502638545092791L;

	private SysparaService sysparaService;

	private Syspara syspara;

	private List<Syspara> lstSysparas;

	/**
	 * 包含分页接受前台变量
	 */
	private SysparaDTO sysparaDTO;

	/**
	 * 标志位：0-增加 1-修改 2-详情
	 */
	private String actionType;

	/**
	 * 分页结果集
	 */
	private ResultDto<Syspara> resultDto;

	/**
	 * 总页数
	 */
	private int totalPage;

	/**
	 * 创建者,以后从session中取
	 */
	private String creator = "yl";

	/**
	 * 增加字典
	 * 
	 * @return
	 * @throws ServiceException
	 */
	public String saveSystemConfigs() throws SysparaException
	{
		sysparaService.insertSystemConfig(syspara);
		return "list";
	}

	public String querySysparaInfoForPage() throws SysparaException
	{

		return null;
	}

	/**
	 * 类目管理-类目分页列表
	 * 
	 * @return
	 * @throws CategoryException
	 */
	public String initSyspara() throws SysparaException
	{
		SysparaDTO categoryDTO = new SysparaDTO();
		Pagination pagination = new Pagination(0);
		categoryDTO.setPagination(pagination);
		resultDto = sysparaService.queryCategoryInfoForPage(categoryDTO);
		totalPage = resultDto.getPagination().getTotalPage();
		return "syspara_list_init";
	}

	/**
	 * 显示列表
	 * 
	 * @return
	 */
	public String list() throws SysparaException
	{

		HttpServletRequest request = ServletActionContext.getRequest();
		String currentPage = request.getParameter("currentPage");
		Pagination pagination = new Pagination(Integer.parseInt(currentPage));
		String pagesize = request.getParameter("pageSize");
		pagination.setPageSize(Integer.parseInt(pagesize));
		if (sysparaDTO == null)
		{
			sysparaDTO = new SysparaDTO();
		}

		sysparaDTO.setPagination(pagination);
		resultDto = sysparaService.list(sysparaDTO);
		totalPage = resultDto.getPagination().getTotalPage();

		return "list";
	}

	/**
	 * 增加页面初始化
	 */
	public String sysparaAddInit() throws SysparaException
	{
		actionType = ConstantUtil.ACTIONTYPE_ADD;
		return "syspara_add_init";
	}

	/**
	 * 新增字典配置
	 * 
	 * @return
	 */
	public String addSyspara() throws SysparaException
	{
		try
		{
			syspara.setCreatDate(DateUtils.getNowDate());
		} catch (ParseException e)
		{
			LOGGER.error("增加字典配置异常", e);
		}
		syspara.setId(UID.getID());
		syspara.setCreator(creator);
		sysparaService.saveSyspara(syspara);
		return "syspara_list_init";
	}

	/**
	 * 修改页面初始化
	 */
	public String sysparaUpdateInit() throws SysparaException
	{
		actionType = ConstantUtil.ACTIONTYPE_UPDATE;
		Syspara resultSyspara = sysparaService.findSysparaInfo(syspara);
		syspara = resultSyspara;
		return "syspara_add_init";
	}

	/**
	 * 修改字典表
	 * 
	 * @return
	 * @throws SysparaException
	 */
	public String updateSyspara() throws SysparaException
	{

		sysparaService.updateSyspara(syspara);
		return "syspara_list_init";
	}

	/**
	 * 修改字典表状态
	 */
	public void updateState()
	{
		try
		{
			sysparaService.updateSyspara(syspara);
		} catch (SysparaException e1)
		{
			try
			{
				failure("操作异常：" + e1.getMessage());
			} catch (IOException e)
			{
				LOGGER.error("修改字典配置异常", e);
			}
		}
		try
		{
			success("成功操作！");
		} catch (IOException e)
		{
			LOGGER.error("修改字典配置异常", e);
		}
	}

	/**
	 * 验证编码是否存在
	 * 
	 * @throws IOException
	 */
	public void codeValidator() throws IOException
	{
		boolean flag = false;
		try
		{
			flag = sysparaService.codeValidator(syspara);
		} catch (SysparaException e)
		{
			LOGGER.error("验证编码是否存在异常", e);
			failure("验证编码是否存在异常" + e.getMessage());
		}
		if (flag)
		{
			failure("该编码已存在，请重新输入");
		} else
		{
			success("输入正确，该编码可以使用");
		}
	}

	/**
	 * @param 对sysparaService进行赋值
	 */
	public void setSysparaService(SysparaService sysparaService)
	{
		this.sysparaService = sysparaService;
	}

	/**
	 * @return 返回 syspara
	 */
	public Syspara getSyspara()
	{
		return syspara;
	}

	/**
	 * @param 对syspara进行赋值
	 */
	public void setSyspara(Syspara syspara)
	{
		this.syspara = syspara;
	}

	public List<Syspara> getLstSysparas()
	{
		return lstSysparas;
	}

	public void setLstSysparas(List<Syspara> lstSysparas)
	{
		this.lstSysparas = lstSysparas;
	}

	public int getTotalPage()
	{
		return totalPage;
	}

	public void setTotalPage(int totalPage)
	{
		this.totalPage = totalPage;
	}

	public SysparaDTO getSysparaDTO()
	{
		return sysparaDTO;
	}

	public void setSysparaDTO(SysparaDTO sysparaDTO)
	{
		this.sysparaDTO = sysparaDTO;
	}

	public ResultDto<Syspara> getResultDto()
	{
		return resultDto;
	}

	public void setResultDto(ResultDto<Syspara> resultDto)
	{
		this.resultDto = resultDto;
	}

	public String getActionType()
	{
		return actionType;
	}

	public void setActionType(String actionType)
	{
		this.actionType = actionType;
	}

}
